Krait Voltage regulators

The cpus are powered using a single supply powered by PMIC ganged regulators operating in
different phases. Individual kraits further can draw power from the single supply via
a LDO or a head switch (BHS).  The first level node represents the PMIC ganged regulator
and its properties and encompasses second level nodes that represent the individual
krait LDO/BHS control regulator.

[First Level Nodes]
Required properties:
- compatible:			Must be "qcom,krait-pdn"
- reg:				This property contains a list of physical
				addresses for Krait PDN features.  The list
				should contain the address of the APCS GCC
				register base and the address of the phase
				scaling factor eFuse.
- reg-names:			This property contains a list of strings naming
				the registers listed in the reg property.
				"apcs_gcc" is a string to identify the area
				where the APCS GCC registers reside.
				"phase-scaling-efuse" should be used to identify
				the phase scaling factor eFuse address.
- qcom,pfm-threshold		The power coeff threshold in abstract power units below which
				pmic will be made to operate in PFM mode.
- qcom,phase-scaling-factor-bits-pos	indicates bit position of scaling factor data within the efuse
					register.
- qcom,valid-scaling-factor-versions	This is an array holding four boolean values and indicates whether
					the version read from efuses is valid.
					The version is a two bit field and the value read from hardware is
					used as an index in this array to check for validity.
Optional properties:
- qcom,use-phase-switching	indicates whether the driver should add/shed phases on the PMIC
				ganged regulator as cpus are hotplugged.
- qcom,use-phase-scaling-factor	Boolean which indicates if the value stored in
				the phase scaling eFuse should be used or not.
				If this property is not specified, then worst
				case scaling will be assumed.
- qcom,force-auto-mode		indicates whether auto mode should be used i.e. disable pfm/pwm
				mode switching for the pmic ganged regulator. If this is not specified
				qcom,pfm-threshold must be specified.
- qcom,pfm-threshold		The power coeff threshold in abstract power units below which
				pmic will be made to operate in PFM mode.

[Second Level Nodes]
Required properties:
- compatible:			Must be "qcom,krait-regulator"
- reg:				Specifies the address and size for this regulator device,
				also specifies the address and the size for the MDD area
				to be used along with the regulator
- reg-names:			"acs" -string to identify the area where main power control
					registers reside.
				"mdd" - string to identify the area where mdd registers reside.
- qcom,headroom-voltage:	The minimum required voltage drop between the input
			 	voltage and the output voltage for the LDO to be
			 	operational, in microvolts. Acceptable values are from
				50000uV to 250000uV
- qcom,retention-voltage:	The value for retention voltage in microvolts. Acceptable
				values are from 465000uV to 750000uV
- qcom,ldo-default-voltage:	The default value for LDO voltage in microvolts. Acceptable
				values are from 465000uV to 750000uV
- qcom,ldo-threshold-voltage:	The voltage value above which LDO is nonfunctional.
				Acceptable values are from 600000uV to 900000uV
- qcom,ldo-delta-voltage:	The delta used to reduce the requested voltage in order
				to derive the LDO output voltage while switching
				to LDO mode. Acceptable values are from 1000uV to 100000uV
- qcom,cpu-num:			Indicates what cpu this regulator controls

Optional properties:
- qcom,ldo-disable:		Indicates whether to disable using LDO mode

Any property defined as part of the core regulator
binding, defined in regulator.txt, can also be used.

Example:
	krait_pdn: krait-pdn@f9011000 {
		reg = <0xf9011000 0x1000>,
		      <0xfc4b80b0 8>;
		reg-names = "apcs_gcc", "phase-scaling-efuse";
		compatible = "qcom,krait-pdn";
		qcom,use-phase-switching;
		qcom,use-phase-scaling-factor;
		qcom,pfm-threshold = <376975>;
		qcom,phase-scaling-factor-bits-pos = <18>;
		qcom,valid-scaling-factor-versions = <0 1 1 0>;

		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		krait0_vreg: regulator@f9088000 {
			compatible = "qcom,krait-regulator";
			regulator-name = "krait0";
			reg = <0xf9088000 0x1000>, /* APCS_ALIAS0_KPSS_ACS */
				<0xf908a800 0x1000>; /* APCS_ALIAS0_KPSS_MDD */
			reg-names = "acs", "mdd";
			regulator-min-microvolt = <500000>;
			regulator-max-microvolt = <1100000>;
			qcom,headroom-voltage = <150000>;
			qcom,retention-voltage = <675000>;
			qcom,ldo-default-voltage = <750000>;
			qcom,ldo-threshold-voltage = <850000>;
			qcom,ldo-delta-voltage = <50000>;
			qcom,cpu-num = <0>;
		};
	};
